package com.fkcai.hansoul.controller;

import com.fkcai.hansoul.model.entity.User;
import org.springframework.web.bind.annotation.*;

/*
 * 该类用于演示（get/port） 请求方式
 * @RestController 将返回的数据转换成 JSON 格式
 * @Controller 将返回 视图页面（html）和 数据（需要前端 ${ 名称 } 获取）
 */
@RestController
public class ParamsController {
	// 简单的 Get 请求
	// @RequestMapping(value = "/getTest01") = GetMapping("/getTest01")
	@RequestMapping(value = "/getTest01", method = RequestMethod.GET)
	public String getTest01 () {
		return "简单的 Get 请求";
	}
	
	// 接收 Get 请求的数据
	// http://localhost:8080/getTest02?nickname=xxx&phone=xxx
	@RequestMapping(value = "/getTest02", method = RequestMethod.GET)
	public String getTest02 (String nickname, String phone) {
		System.out.println("nickname = " + nickname);
		System.out.println("phone = " + phone);
		return "接收 Get 请求的数据";
	}
	
	// 接收的参数名与传入的参数名不一致
	// 需要通过 @RequestParam(value = "nickname") 来绑定接收的参数名，如果没有 required = false，则表示一定要有传入的参数
	// http://localhost:8080/getTest03?nickname=xxx
	@RequestMapping(value = "/getTest03", method = RequestMethod.GET)
	public String getTest03 (@RequestParam(value = "nickname", required = false) String name) {
		System.out.println("nickname = " + name);
		return "Get 请求 接收的参数名与传入的参数名不一致";
	}
	
	// 通配符请求
	// ** 表示所有的 url，无论后面有多少层（/test/123/123/123/123...）
	@RequestMapping(value = "/test/**")
	public String getTest04 () {
		System.out.println("1121");
		return "通配符请求";
	}
	
	// 简单的 post 请求
	// @RequestMapping(value = "/postTest01", method = RequestMethod.POST) = @PostMapping(value = "/postTest01")
	@RequestMapping(value = "/postTest01", method = RequestMethod.POST)
	public String postTest01 () {
		return "简单的 Post 请求";
	}
	
	// 接收 Post 请求的数据
	@RequestMapping(value = "/postTest02", method = RequestMethod.POST)
	public String postTest02 (String username, String password) {
		System.out.println("username = " + username);
		System.out.println("password = " + password);
		return "接收 Post 请求的数据";
	}
	
	// 接收 Post 请求的 Json 数据转换为对象，返回的是对象字符串
	@RequestMapping(value = "/postTest03", method = RequestMethod.POST)
	public String postTest03 (User user) {
		System.out.println(user);
		return "接收 Post 请求的 Json 数据转换为对象";
	}
	
	// 接收 Post 请求的 Json 格式数据，返回的是 Json 字符串
	@RequestMapping(value = "/postTest04", method = RequestMethod.POST)
	public String postTest04 (@RequestBody User user) {
		System.out.println(user);
		return "Post 接收 Post 请求的 Json 格式数据";
	}
}
